﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.HSSF.Util;
using NPOI.POIFS.FileSystem;
using NPOI.HPSF;

public partial class BaoCaoLuongTongHop : System.Web.UI.Page
{
    SqlParameter[] p;
    clsXuLy ex = new clsXuLy();
    NpoiExport cl = new NpoiExport();
    string frmName = "frmBaoCaoLuongTongHop";
    static System.Data.DataTable dt;
    static int PageNumber = 10;
    static int CurrentPage = 1;
    static int f_SuDung = 0, f_XemTatCa = 0, f_InBaoCao = 0;
    public string Header = System.Configuration.ConfigurationSettings.AppSettings["Header"].ToString();
    static double luongcb = 0, pcap = 0, luongtn = 0, tongluongcb = 0, tienthuong = 0, tiencongdem = 0, tienanca = 0, tienphat = 0, tienung = 0, tiencongdoan = 0, luongsl = 0, thuclinh = 0;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(Convert.ToString(Session["user"])) || string.IsNullOrEmpty(Convert.ToString(Session["IDUser"])))
            Response.Redirect("Default.aspx");
        if (!IsPostBack)
        {
            string idnguoidung = Session["IDUser"].ToString();
            string sql = "select SuDung,Them,Sua,Xoa,InBaoCao,XemTatCa from XDAPhanQuyen where IDnguoidung='" + idnguoidung + "' and tag='" + frmName + "'";

            System.Data.DataTable dt2 = ex.GetData_Text(sql);
            if (dt2.Rows.Count > 0)
            {
                f_SuDung = int.Parse(dt2.Rows[0]["SuDung"].ToString());
                f_InBaoCao = int.Parse(dt2.Rows[0]["InBaoCao"].ToString());
                f_XemTatCa = int.Parse(dt2.Rows[0]["XemTatCa"].ToString());
            }

            Title = "Báo cáo tổng hợp lương nhân viên | " + Header;

            for (int i = 1; i <= 12; i++)
            {
                dlThang.Items.Add(new ListItem("Tháng " + i.ToString(), i.ToString()));
            }
            dlThang.Items.Insert(0, new ListItem("--Chọn tháng--", ""));
            dlThang.SelectedIndex = 0;

            int year1 = DateTime.Now.Year - 3;
            int year2 = DateTime.Now.Year;
            for (int i = year2; i >= year1; i--)
            {
                dlNam.Items.Add(new ListItem("Năm " + i.ToString(), i.ToString()));
            }
            dlNam.SelectedValue = year2.ToString();

            btnNext.Visible = false;
            btnPre.Visible = false;
            btnFirst.Visible = false;

            LoadNhanVien(dlNhanVien);
            LoadBoPhan(dlBoPhan);
            LoadChucVu(dlChucVu);
        }
    }
    
    private void gstGetMess(string gstMess, string gstLink)
    {
        if (gstLink == "")
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "')", true);
        else
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "');window.location.href='" + gstLink + "'", true);

    }
    public void getDate()
    {
        if (dlThang.SelectedIndex.Equals(0))
        {
            hdTuNgay.Value = "";
            hdDenNgay.Value = "";
        }
        else
        {
            hdTuNgay.Value = "1/" + dlThang.SelectedValue + "/" + dlNam.SelectedValue;
            hdDenNgay.Value = GetLastDayOfMonth(int.Parse(dlThang.SelectedValue)).ToString("dd/MM/yyyy");
        }
    }
    public DateTime GetLastDayOfMonth(int iMonth)
    {
        DateTime dtResult = new DateTime(int.Parse(dlNam.SelectedValue), iMonth, 1);
        dtResult = dtResult.AddMonths(1);
        dtResult = dtResult.AddDays(-(dtResult.Day));
        return dtResult;
    }

    void LoadNhanVien(DropDownList dlLaiXe)
    {
        dlLaiXe.Items.Clear();
        dlLaiXe.DataSource = ex.GetData("sp_BCL_LoadNhanVien");
        dlLaiXe.DataBind();
        dlLaiXe.Items.Insert(0, new ListItem("--Chọn nhân viên--", ""));
        dlLaiXe.SelectedIndex = 0;
    }
    void LoadBoPhan(DropDownList dlBoPhan)
    {
        dlBoPhan.Items.Clear();
        dlBoPhan.DataSource = ex.GetData("sp_xdabophan_ListDop");
        dlBoPhan.DataBind();
        dlBoPhan.Items.Insert(0, new ListItem("--Chọn bộ phận--", ""));
        dlBoPhan.SelectedIndex = 0;
    }
    void LoadChucVu(DropDownList dlChucVu)
    {
        dlChucVu.Items.Clear();
        dlChucVu.DataSource = ex.GetData("sp_xdachucvu_ListDrop");
        dlChucVu.DataBind();
        dlChucVu.Items.Insert(0, new ListItem("--Chọn chức vụ--", ""));
        dlChucVu.SelectedIndex = 0;
    }
    protected void btnXem_Click(object sender, EventArgs e)
    {
        CurrentPage = 1;
        Search(1);

    }
    void Search(int page)
    {
        if (dlThang.SelectedIndex > 0)
        {
            int index = 1;
            if (dlNhanVien.SelectedIndex.Equals(0) && dlBoPhan.SelectedIndex.Equals(0) && dlChucVu.SelectedIndex.Equals(0))
                index = 1;
            else if (dlNhanVien.SelectedIndex>0 && dlBoPhan.SelectedIndex.Equals(0) && dlChucVu.SelectedIndex.Equals(0))
                index = 2;
            else if (dlNhanVien.SelectedIndex.Equals(0) && dlBoPhan.SelectedIndex>0 && dlChucVu.SelectedIndex.Equals(0))
                index = 3;
            else if (dlNhanVien.SelectedIndex.Equals(0) && dlBoPhan.SelectedIndex.Equals(0) && dlChucVu.SelectedIndex>0)
                index = 4;

            p = new SqlParameter[6];
            p[0] = new SqlParameter("@Thang", int.Parse(dlThang.SelectedValue));
            p[0].SqlDbType = SqlDbType.Int;
            p[1] = new SqlParameter("@Nam", int.Parse(dlNam.SelectedValue));
            p[1].SqlDbType = SqlDbType.Int;
            p[2] = new SqlParameter("@NhanVien", ex.GetGuid(dlNhanVien.SelectedValue));
            p[2].SqlDbType = SqlDbType.UniqueIdentifier;
            p[3] = new SqlParameter("@Index", index);
            p[3].SqlDbType = SqlDbType.Int;
            p[4] = new SqlParameter("@BoPhan", ex.GetGuid(dlBoPhan.SelectedValue));
            p[4].SqlDbType = SqlDbType.UniqueIdentifier;
            p[5] = new SqlParameter("@ChucVu", ex.GetGuid(dlChucVu.SelectedValue));
            p[5].SqlDbType = SqlDbType.UniqueIdentifier;
            //p[4] = new SqlParameter("@PageNumber", page);
            //p[4].SqlDbType = SqlDbType.Int;
            //p[5] = new SqlParameter("@RowspPage", PageNumber);
            //p[5].SqlDbType = SqlDbType.Int;

            GV.DataSource = ex.GetData("sp_BCL_TongHop", p);
            GV.DataBind();
            luongcb = pcap = luongtn = tongluongcb = tienthuong = tiencongdem = tienanca = tienphat = tienung = tiencongdoan = luongsl = thuclinh = 0;
            string dathanhtoan = "";
            for (int i = 0; i < GV.Rows.Count; i++)
            {
                luongcb += double.Parse(GV.Rows[i].Cells[4].Text.Trim().Replace(",", ""));
                pcap += double.Parse(GV.Rows[i].Cells[5].Text.Trim().Replace(",", ""));
                luongtn += double.Parse(GV.Rows[i].Cells[6].Text.Trim().Replace(",", ""));
                tongluongcb += double.Parse(GV.Rows[i].Cells[10].Text.Trim().Replace(",", ""));
                tienthuong += double.Parse(GV.Rows[i].Cells[11].Text.Trim().Replace(",", ""));
                tiencongdem += double.Parse(GV.Rows[i].Cells[12].Text.Trim().Replace(",", ""));
                tienanca += double.Parse(GV.Rows[i].Cells[13].Text.Trim().Replace(",", ""));
                tienphat += double.Parse(GV.Rows[i].Cells[14].Text.Trim().Replace(",", ""));
                tienung += double.Parse(GV.Rows[i].Cells[15].Text.Trim().Replace(",", ""));
                tiencongdoan += double.Parse(GV.Rows[i].Cells[16].Text.Trim().Replace(",", ""));
                luongsl += double.Parse(GV.Rows[i].Cells[17].Text.Trim().Replace(",", ""));
                thuclinh += double.Parse(GV.Rows[i].Cells[18].Text.Trim().Replace(",", ""));

                LinkButton lbt=(LinkButton)GV.Rows[i].Cells[0].FindControl("lbtDel");
                dathanhtoan = lbt.Text.Trim();
                CheckBox ckChi = (CheckBox)GV.Rows[i].Cells[0].FindControl("ckChi");
                
                if (dathanhtoan.Trim().Equals("X")) 
                    ckChi.Enabled= false;
                else ckChi.Enabled = true;
            }
            if (GV.Rows.Count > 0)
            {
                GV.FooterRow.Cells[1].Text = "Tổng cộng";
                GV.FooterRow.Cells[1].HorizontalAlign = HorizontalAlign.Center;

                GV.FooterRow.Cells[4].Text = ex.ConvertDecimal(luongcb);
                GV.FooterRow.Cells[5].Text = ex.ConvertDecimal(pcap);
                GV.FooterRow.Cells[6].Text = ex.ConvertDecimal(luongtn);
                GV.FooterRow.Cells[10].Text = ex.ConvertDecimal(tongluongcb);
                GV.FooterRow.Cells[11].Text = ex.ConvertDecimal(tienthuong);
                GV.FooterRow.Cells[12].Text = ex.ConvertDecimal(tiencongdem);
                GV.FooterRow.Cells[13].Text = ex.ConvertDecimal(tienanca);
                GV.FooterRow.Cells[14].Text = ex.ConvertDecimal(tienphat);
                GV.FooterRow.Cells[15].Text = ex.ConvertDecimal(tienung);
                GV.FooterRow.Cells[16].Text = ex.ConvertDecimal(tiencongdoan);
                GV.FooterRow.Cells[17].Text = ex.ConvertDecimal(luongsl);
                GV.FooterRow.Cells[18].Text = ex.ConvertDecimal(thuclinh);
            }
        }
        else gstGetMess("Chọn tháng", "");
    }
    protected void btnPrint_Click(object sender, EventArgs e)
    {

    }
    protected void GV_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#EEFFAA'");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
        }
    }
    protected void btnFirst_Click(object sender, EventArgs e)
    {
        CurrentPage = 1;

        Search(CurrentPage);

        btnPre.Enabled = false;
        btnNext.Enabled = true;
        btnFirst.Enabled = false;
    }
    protected void btnPre_Click(object sender, EventArgs e)
    {
        if (CurrentPage > 1)
        {
            CurrentPage--;
            btnPre.Enabled = true;
            btnNext.Enabled = true;
            btnFirst.Enabled = true;

            Search(CurrentPage);
        }
        else
        {
            btnFirst.Enabled = false;
            btnPre.Enabled = false;
            btnNext.Enabled = true;
        }
    }
    protected void btnNext_Click(object sender, EventArgs e)
    {
        CurrentPage++;

        Search(CurrentPage);

        if (GV.Rows.Count.Equals(0))
        {
            btnPre.Enabled = true;
            btnNext.Enabled = false;
        }
        else
        {
            btnPre.Enabled = true;
            btnNext.Enabled = true;
        }
        btnFirst.Enabled = true;
    }
    protected void btnThanhToan_Click(object sender, EventArgs e)
    {
        string sotien = "", sql = "";
        int count = 0;
        for (int j = 0; j < GV.Rows.Count; j++)
        {
            Label lbID = (Label)GV.Rows[j].Cells[19].FindControl("lbID");
            CheckBox ckChi = (CheckBox)GV.Rows[j].Cells[1].FindControl("ckChi");
            sotien = GV.Rows[j].Cells[18].Text.Trim().Replace(",", "");
            if (ckChi.Checked)
            {
                sql += "insert into xdathanhtoanluong values('" + Guid.NewGuid().ToString() + "'," + dlThang.SelectedValue + "," + dlNam.SelectedValue + ",'" + lbID.Text.Trim() + "'," + sotien + ") ";
                count++;
            }
        }
        if (sql.Trim() != "")
        {
            ex.ExecuteNonQuerry_Text(sql);
            Search(1);
            gstGetMess("Đã thanh toán cho " + count.ToString() + " nhân viên", "");
        }
        else
            gstGetMess("Chưa chọn nhân viên nào để thanh toán", "");
    }
    protected void ckAll_CheckedChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < GV.Rows.Count; i++)
        {
            CheckBox ck1 = (CheckBox)GV.Rows[i].Cells[1].FindControl("ckChi");
            if (ck1.Enabled)
            {
                if (ckAll.Checked)
                    ck1.Checked = true;
                else
                    ck1.Checked = false;
            }
        }
    }
    protected void dlTimKiem_SelectedIndexChanged(object sender, EventArgs e)
    {
        dlNhanVien.SelectedIndex = 0;
        dlBoPhan.SelectedIndex = 0;
        dlChucVu.SelectedIndex = 0;

        if (dlTimKiem.SelectedIndex.Equals(0))
        {
            dlNhanVien.Visible = false;
            dlBoPhan.Visible = false;
            dlChucVu.Visible = false;

        }
        else if (dlTimKiem.SelectedIndex.Equals(1))
        {
            dlNhanVien.Visible = true;
            dlBoPhan.Visible = false;
            dlChucVu.Visible = false;
        }
        else if (dlTimKiem.SelectedIndex.Equals(2))
        {
            dlNhanVien.Visible = false;
            dlBoPhan.Visible = true;
            dlChucVu.Visible = false;
        }
        else if (dlTimKiem.SelectedIndex.Equals(3))
        {
            dlNhanVien.Visible = false;
            dlBoPhan.Visible = false;
            dlChucVu.Visible = true;
        }
    }
    protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string ID = e.CommandArgument.ToString();
        Guid gID = new Guid(ID);
        p = new SqlParameter[1];
        p[0] = new SqlParameter("@IDs", gID);
        p[0].SqlDbType = SqlDbType.UniqueIdentifier;
        if (e.CommandName.Equals("Del"))
        {
            try
            {
                ex.ExecuteNonQuerry("sp_xdathanhtoanluong_Del", p);
                Search(1);
                gstGetMess("Xóa thành công", "");
            }
            catch (Exception ax)
            {
                gstGetMess(ax.Message, "");
            }
        }
    }
}